package br.ceut.especializacao.poo.autores;

import java.util.List;

import br.ceut.especializacao.poo.livros.Livro;
import br.ceut.especializacao.poo.livros.LivroJaCadastradoException;
import br.ceut.especializacao.poo.livros.LivroNaoEncontradoException;
import br.ceut.especializacao.poo.util.RepositorioException;

public class CadastroAutores {

    private RepositorioAutores autores;

    public CadastroAutores(RepositorioAutores repositorio) {
        this.autores = repositorio;
        
    }

    public void cadastrar(Autor autor) throws AutorJaCadastradoException,
            RepositorioException {
        if (autor != null) {
            if (!autores.existe(autor.getIdAutor())) {
            	autores.inserir(autor);
            } else {
                throw new AutorJaCadastradoException(autor.getIdAutor());
            }
        } else {
            throw new IllegalArgumentException();
        }
    }

    public void remover(int idAutor) throws AutorNaoEncontradoException, RepositorioException {
        autores.remover(idAutor);
    }

    public List<Autor> getAutores(){
		try {
			return autores.getAutores();
		} catch (RepositorioException e) {
			e.printStackTrace();
		}
		return null;
	}
  
    public Autor buscarAutor(int idAutor) throws AutorNaoEncontradoException, RepositorioException {
		return autores.procurar(idAutor);
	}
    
    public void atualizar(Autor autor) throws RepositorioException, AutorJaCadastradoException {
		if (autor != null) {
			if (autores.existe(autor.getIdAutor())) {
				try {
					autores.atualizar(autor);
				} catch (AutorNaoEncontradoException e) {
					e.printStackTrace();
				}
			} 
		} else {
			throw new IllegalArgumentException();
		}		
	}

    public Autor procurar(int idAutor) throws AutorNaoEncontradoException,
            RepositorioException {
        return autores.procurar(idAutor);
    }

}